package action;

import com.opensymphony.xwork2.ActionSupport;
import java.sql.SQLException;
import java.util.List;
import model.Aluno;
import model.Curso;

public class AlunoAction extends ActionSupport{
    private String nomeAluno;
    private String turmaSerial;
    private Aluno aluno;
    private List<Aluno> alunos;
    private int matricula;
    private List<Curso> cursos;
    private String operacao;
    private String[] estados = { "AC", "AL", "AP", "AM", "BA", "CE", "DF",
			"ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI",
			"RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO" };
    private String[] statusList = {"Matriculado","Trancado","Formado"};
    private String readOnly;
    private String readOnlyCod;

    public String getReadOnlyCod() {
        return readOnlyCod;
    }

    public void setReadOnlyCod(String readOnlyCod) {
        this.readOnlyCod = readOnlyCod;
    }

    public String getReadOnly() {
        return readOnly;
    }

    public void setReadOnly(String readOnly) {
        this.readOnly = readOnly;
    }

    public String getTurmaSerial() {
        return turmaSerial;
    }

    public void setTurmaSerial(String turmaSerial) {
        this.turmaSerial = turmaSerial;
    }

    public String getNomeAluno() {
        return nomeAluno;
    }

    public void setNomeAluno(String nomeAluno) {
        this.nomeAluno = nomeAluno;
    }

    public List<Aluno> getAlunos() {
        return alunos;
    }

    public void setAlunos(List<Aluno> alunos) {
        this.alunos = alunos;
    }

    public int getMatricula() {
        return matricula;
    }

    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public String getOperacao() {
        return operacao;
    }

    public void setOperacao(String operacao) {
        this.operacao = operacao;
    }

    public String[] getEstados() {
        return estados;
    }

    public void setEstados(String[] estados) {
        this.estados = estados;
    }

    public String[] getStatusList() {
        return statusList;
    }

    public void setStatusList(String[] statusList) {
        this.statusList = statusList;
    }
    
    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }
    
    public String pesquisar() throws ClassNotFoundException, SQLException{
        alunos = Aluno.obterAlunos();
        if(!nomeAluno.equals("")){
            alunos = Aluno.obterAlunosPorNome(nomeAluno);
        }
        return "pesquisar";
    }
    
    public String incluir() throws ClassNotFoundException, SQLException{
        cursos = Curso.obterCursos();
        readOnly = "";
        readOnlyCod = "true";
        operacao = "Incluir";
        return "manter";
    }
    
    public String editar() throws ClassNotFoundException, SQLException{
        aluno = Aluno.obterAluno(matricula);
        cursos = Curso.obterCursos();
        readOnly = "";
        readOnlyCod = "true";
        operacao = "Editar";
        return "manter";
    }
    
    public String excluir() throws ClassNotFoundException, SQLException{
        aluno = Aluno.obterAluno(matricula);
        cursos = Curso.obterCursos();
        readOnly = "true";
        readOnlyCod = "true";
        operacao = "Excluir";
        return "manter";
    }

    public String confirmar() throws SQLException, ClassNotFoundException {
        cursos = Curso.obterCursos();
        
        if(aluno.getAnoIngresso() == null || aluno.getAnoIngresso() == 0){
            addFieldError("aluno.anoIngresso", "Não pode ser NULO");
            return INPUT;
        }
        if(aluno.getSemestreIngresso() == null || aluno.getSemestreIngresso()== 0){
            addFieldError("aluno.semestreIngresso", "Não pode ser NULO");
            return INPUT;
        }
        
        if(aluno.getPosicaoVestibular() == null || aluno.getPosicaoVestibular() == 0){
            addFieldError("aluno.posicaoVestibular", "Não pode ser NULO");
            return INPUT;
        }

        if (operacao.equals("Incluir")) {
            aluno.gerarMatricula();
            aluno.gravar();
        } else {
            if (operacao.equals("Editar")) {
                aluno.editar();
            } else {
                if (operacao.equals("Excluir")) {
                    aluno.excluir();
                }
            }
        }
        nomeAluno = "";
        return pesquisar();
    }

    public String voltar() {
        return "voltar";
    }
}
